﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using BLL;
using DataAccess;
using QuanLyKhachSan.FormThemCapNhat;
using NLog;

namespace QuanLyKhachSan
{
    public partial class TabTaiKhoan : DevExpress.XtraEditors.XtraUserControl, IGeneatetabName
    {
        private readonly TaiKhoanManager tkManager;
        protected static Logger _logger = LogManager.GetCurrentClassLogger();

        public TabTaiKhoan()
        {
            InitializeComponent();
            tkManager = new TaiKhoanManager();
        }

        public string Getname()
        {
            return "Tài khoản";
        }

        private void LoadDb()
        {
            List<TaiKhoan> listTaiKhoans = tkManager.LayDanhSach().Result;
            var focusedRowHandle = gridView1.FocusedRowHandle;
            gridControlTaiKhoan.DataSource = listTaiKhoans;
            gridView1.BestFitColumns();
            gridView1.FocusedRowHandle = focusedRowHandle;
        }

        private void TabTaiKhoan_Load(object sender, EventArgs e)
        {
            LoadDb();
        }

        private void Them()
        {
            _logger.Info(Commons.ToString() + ", Chọn thao tác thêm tài khoản.");
            var frmTaiKhoanCapNhat = new FormTaiKhoanCapNhat();
            frmTaiKhoanCapNhat.ShowDialog();
            if (frmTaiKhoanCapNhat.IsInserted)
            {
                XtraMessageBox.Show("Thêm thành công");
                LoadDb();
            }
        }

        private TaiKhoan GetRowSelected()
        {
            int rowSelected = gridView1.GetSelectedRows()[0];
            return gridView1.GetRow(rowSelected) as TaiKhoan;
        }

        private void Xoa()
        {
            _logger.Info(Commons.ToString() + ", Chọn thao tác xóa tài khoản.");
            var tk = GetRowSelected();
            var confirm = XtraMessageBox.Show("Bạn có chắc chắn xóa không", "Xác nhận", MessageBoxButtons.YesNo,
                 MessageBoxIcon.Question);
            if (confirm == DialogResult.Yes)
            {
                var rs = tkManager.Xoa(tk);
                if (rs.Sucess())
                {
                    XtraMessageBox.Show("Xóa thành công");
                }
                else
                {
                    XtraMessageBox.Show(rs.GetErrorMessage());
                }
                LoadDb();
            }
        }

        private void CapNhat()
        {
            _logger.Info(Commons.ToString() + ", Chọn thao tác cập nhật tài khoản.");
            var taiKhoanSelected = GetRowSelected();
            if (taiKhoanSelected != null)
            {
                var frm = new FormTaiKhoanCapNhat(taiKhoanSelected);
                frm.btnThaoTac.Text = "Cập nhật";
                frm.ShowDialog();
                if (frm.IsInserted)
                {
                    XtraMessageBox.Show("Cập nhật thành công");
                    LoadDb();
                }
            }
            else
            {
                XtraMessageBox.Show("Bạn phải chọn 1 phòng để cập nhật.", "thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            Them();
        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            CapNhat();
        }

        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            Xoa();
        }

        private void barButtonItemThem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Them();
        }

        private void barButtonItemCapNhat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            CapNhat();
        }

        private void barButtonItem5_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Xoa();
        }

        private void barButtonItem4_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            LoadDb();
        }

        private void thêmTàiKhoảnToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Them();
        }

        private void cậpNhậtTàiKhoảnToolStripMenuItem_Click(object sender, EventArgs e)
        {
            CapNhat();
        }

        private void xóaTàiKhoảnToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Xoa();
        }

        private void gridView1_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
        {
            var tk = GetRowSelected();
            var rs = tkManager.CapNhat(tk);
            if (tk != null)
            {
                XtraMessageBox.Show(rs.Sucess() ? "Cập nhật thành công" : rs.GetErrorMessage());
            }
        }
    }
}
